<template>
  <div>
    <input placeholder="输入关键字搜索" v-model.trim="searchKeywords">
    <table class="my-table">
      <thead>
        <tr>
          <th>就诊日期</th>
          <th>医生姓名</th>
          <th>诊断结果</th>
          <th>处方信息</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="v of displayList" :key="v.doctor">
          <td>{{ v.date }}</td>
          <td>{{ v.doctor }}</td>
          <td>{{ v.diagnosis }}</td>
          <td>{{ v.prescription }}</td>
          <td @click="showDetail(v)">详情</td>
        </tr>
      </tbody>
    </table>

    <!-- <DoctorDetail :visible="isShowDetail" @update:visible="isShowDetail = $event" :doctor="doctor" /> -->
    <DoctorDetail :visible.sync="isShowDetail" :doctor="doctor" />
  </div>
</template>

<script>
import DoctorDetail from './DoctorDetail.vue'

export default {
  name: 'DoctorList',
  components: {
    DoctorDetail
  },
  data() {
    return {
      searchKeywords: '', // 搜索关键字
      isShowDetail: false, // 是否显示详情对话框
      doctor: {}, // 当前查看的医生信息
      records: [
        {
          date: '2022-01-01',
          doctor: '张三',
          diagnosis: '感冒',
          prescription: '感冒药',
        },
        {
          date: '2022-02-01',
          doctor: '李四',
          diagnosis: '头疼',
          prescription: '止疼药',
        },
        {
          date: '2022-03-01',
          doctor: '王五',
          diagnosis: '腰痛',
          prescription: '止痛贴',
        }
      ]
    }
  },

  computed: {
    // 写完整写法还是简单写法？简单写法就够了，不需要设置值
    displayList() {
      // 如果没有搜索关键字，那么就展示完整列表
      if (this.searchKeywords === '') return this.records
      // 否则，才根据搜索关键字进行过滤
      // return this.records.filter(v => v.doctor === this.searchKeywords)
      return this.records.filter(v => v.doctor.startsWith(this.searchKeywords))
    }
  },

  methods: {
    showDetail(doctor) {
      this.doctor = doctor
      this.isShowDetail = true
    } 
  }
}
</script>

<style scoped>
  .my-table {
    border-collapse: collapse;
    width: 100%;
  }

  .my-table td, .my-table th {
    border: 1px solid #ddd;
    padding: 8px;
    text-align: left;
  }

  .my-table th {
    background-color: #f2f2f2;
  }
</style>